home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / dskut / hdsource.zip / HDRW.ASM < prev    next >
Assembly Source File  |  1986-02-24  |  11KB  |  296 lines

  1.      PAGE     64,132            ;PAGE WIDTH,LENGTH
  2.      .SALL
  3.      TITLE     PC/AT DIAGNOSTIC - WRITE/READ/VERIFY TEST
  4. ; **********************************************************************
  5. ; *                                       *
  6. ; *    MODULE NAME    HDRW                           *
  7. ; *    AUTHOR           JIM BRACKING                       *
  8. ; *                                       *
  9. ; *    DECSRIPTION    THIS PROGRAM PERFORMS THE FOLLOWING           *
  10. ; *               FUNCTIONS:                       *
  11. ; *                                       *
  12. ; *               1.  WRITES, THEN VERIFIES THE DATA ON THE       *
  13. ; *               ENTIRE DIAGNOSTIC CYLINDER.               *
  14. ; **********************************************************************
  15. ;
  16. ; **********************************************************************
  17. ; *            EXTERNAL PROGRAM REFERENCES               *
  18. ; **********************************************************************
  19.      EXTRN     SCRMGR:NEAR
  20. ; **********************************************************************
  21. ; *              EXTERNAL DATA REFERENCES               *
  22. ; **********************************************************************
  23.      INCLUDE HDDATA.ASM
  24. ; **********************************************************************
  25. ; *            EXTERNAL SUBROUTINE REFERENCES               *
  26. ; **********************************************************************
  27.      INCLUDE HDSUB.ASM
  28. ; **********************************************************************
  29. ; *                PUBLIC DECLARES                   *
  30. ; **********************************************************************
  31.      PUBLIC  HDRW
  32. ; **********************************************************************
  33. ; *                 MACROS                    *
  34. ; **********************************************************************
  35. ;
  36.      IF1
  37.      INCLUDE HD.MAC
  38.      INCLUDE \SCRMGR\SCRNWORK.MAC
  39.      ENDIF
  40. ; **********************************************************************
  41. ; *                                       *
  42. ; *                   BEGIN                       *
  43. ; *                                       *
  44. ; **********************************************************************
  45. CSEG     SEGMENT PARA PUBLIC 'CODE'
  46.      ASSUME CS:CSEG
  47. HDRW   PROC    NEAR
  48.      ASSUME  DS:CSEG           ;DATA SEGMENT
  49.      JMP     BY_ID               ;JMP AROUND ID
  50.      ID     HDRW
  51.      INCLUDE \SCRMGR\SCRNWORK.ASM
  52. ; **********************************************************************
  53. ; *             EQUATES AND STRUCTURES                *
  54. ; **********************************************************************
  55.      INCLUDE HDEQU.ASM
  56. ; **********************************************************************
  57. ; *                 SCREENS                   *
  58. ; **********************************************************************
  59. ;
  60.   SFIELD X00,X01,,@LABEL,RV,23,02,'CTRL-F1 TO START'
  61.   SFIELD X01,X02,,@LABEL,RV,23,29,'ESC FOR THE MAIN MENU'
  62.   SFIELD X02,X00,,@LABEL,RV,23,62,'CTRL-BRK TO STOP'
  63. ;
  64.   SFIELD XI0,XI1,,@LABEL,LO,19,05,'DRIVE =>'
  65.   SFIELD XI1,XI2,1,@EX+@NUM+@UC+@NFULL+@REQ,LO,19,14
  66.   SFIELD XI2,XI3,,@LABEL,LO,20,05,'(1 OR 2)'
  67.   SFIELD XI3,XI4,,@LABEL,LO,19,20,'RUN CONTINIOUSLY =>'
  68.   SFIELD XI4,XI5,1,@UC+@EX+@YN+@NFULL+@REQ,LO,19,40
  69.   SFIELD XI5,XI0,,@LABEL,LO,20,26,'(Y OR N)'
  70. ;
  71.   SFIELD XS0,XS1,,@LABEL,LO,19,46,'STATUS =>'
  72.   SFIELD XS1,XS0,,@LABEL,LO,19,56,'** IDLE **   '
  73. ;
  74.   SFIELD XS2,XS3,,@LABEL,LO,19,46,'STATUS =>'
  75.   SFIELD XS3,XS2,,@LABEL,HI,19,56,'** WORKING **'
  76. ;
  77.   SFIELD XC0,XC1,,@LABEL,LO,20,46,'CYLINDER =>'
  78.   SFIELD XC1,XC0,04,@LABEL,LO,20,58
  79. ;
  80.   SFIELD XE0,XE1,,@LABEL,LO,21,46,'ERRORS =>'
  81.   SFIELD XE1,XE0,05,@LABEL,LO,21,56
  82. ;
  83.   SFIELD T05,T05,,@LABEL,RV,17,28,'WRITE/READ/VERIFY TEST'
  84. ;
  85. BY_ID:
  86. HDRW   ENDP
  87. ; *********************************************************************
  88. ; *                                      *
  89. ; *              WRITE/VERIFY TEST                  *
  90. ; *                                      *
  91. ; *********************************************************************
  92. RWV     PROC
  93.      CLS     LO,4,1,23,78           ;CLEAR THE SCREEN
  94.      BOX     17,0,08,80,LO           ;OUTLINE
  95.      WRITEC  0CCH,LO,17,0,1        ;  THE
  96.      WRITEC  0B9H,LO,17,79,1       ;  SCREEN
  97.      WRITE     T05               ;TYPE OF TEST
  98.      WRITE     X00               ;COMMANDS
  99. RWV_00:
  100.      WRITE     XS0               ;STATUS
  101.      LEA     BX,XI1            ;DRIVE ENTRY
  102.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  103.      CMP     ALL_SW,0FFH           ;RUN ALL TEST??
  104.      JE     RWV_01            ;YES
  105.      MOV     [BX].S_DATA,' '       ;CLEAR DRIVE
  106.      JMP     RWV_01A           ;CONTINUE
  107. RWV_01:
  108.      LEA     BX,XI4            ;Y/N ENTRY
  109.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  110.      MOV     [BX].S_DATA,'Y'       ;DEFAULT NO
  111.      MOV     AL,DR               ;FETCH DRIVE
  112.      INC     AL               ;NUMBER
  113.      OR     AL,30H            ;MAKE IT A NUMBER
  114.      MOV     [BX].S_DATA,AL        ;SET IT IN THE MSG
  115.      WRITE     XI0               ;DRIVE
  116.      JMP     RWV_15            ;CONTINUE
  117. RWV_01A:
  118.      LEA     BX,XI4            ;Y/N ENTRY
  119.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  120.      MOV     [BX].S_DATA,'N'       ;DEFAULT NO
  121.      WRITE     XI0               ;DRIVE
  122. RWV_02:
  123.      READR     BX               ;FETCH DRIVE
  124.      CALL     TRANS_KEY           ;TRANSLATE THE KEY
  125.      JNC     RWV_04            ;SUCESSFULL
  126. RWV_03:
  127.      CALL     BEEP               ;RING THE BELL
  128.      JMP     RWV_02            ;TRY AGAIN
  129. RWV_04:
  130.      CMP     AL,ESC_KEY           ;ESCAPE KEY??
  131.      JNE     RWV_05            ;NO
  132.      JMP     EXIT               ;RETURN
  133. RWV_05:
  134.      CMP     AL,C_BRK           ;CONTROL BREAK KEY??
  135.      JNE     RWV_07            ;NO
  136.      JMP     RWV               ;YES - START OVER
  137. RWV_07:
  138.      CMP     AL,C_F1           ;CTRL_F1??
  139.      JNE     RWV_03            ;NO - INVALID KEY
  140.      LEA     BX,XI1            ;DRIVE ENTRY
  141.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  142.      MOV     AL,[BX].S_DATA        ;FETCH DRIVE NUMBER
  143.      CMP     AL,'1'                ;VALID DRIVE??
  144.      JE     RWV_08            ;YES
  145.      CMP     AL,'2'                ;VALID DRIVE??
  146.      JE     RWV_08            ;YES
  147.      MOV     [BX].S_ATTR,HI        ;HIGHLIGHT IT
  148.      PMSG     22               ;DISPLAY THE MESSAGE
  149.      CALL     BEEP               ;RING THE BELL
  150.      WRITE     XI0               ;DRIVE + INTERLEAVE
  151.      JMP     RWV_02            ;TRY AGAIN
  152. RWV_08:
  153.      AND     AL,0FH            ;ADJUST
  154.      DEC     AL               ;  DRIVE NUMBER
  155.      CMP     AL,NUM_DR           ;DRIVE INSTALLED
  156.      JB     RWV_10            ;YES
  157.      MOV     [BX].S_ATTR,HI        ;HIGHLIGHT IT
  158.      PMSG     21               ;DISPLAY THE MESSAGE
  159.      CALL     BEEP               ;RING THE BELL
  160.      WRITE     XI0               ;DRIVE + INTERLEAVE
  161.      JMP     RWV_02            ;TRY AGAIN
  162. RWV_10:
  163.      MOV     DR,AL               ;SAVE DRIVE NUMBER
  164.      LEA     BX,XI1            ;DRIVE ENTRY
  165.      MOV     [BX].S_ATTR,LO        ;RESTORE ATTRIBUTE
  166.      WRITE     XI0               ;DRIVE
  167. RWV_15:
  168.      MOV     AX,06DB6H           ;DATA PATTERN
  169.      MOV     CX,256            ;NUMBER OF WORDS
  170.      CLD                   ;FORWARD DIRECTION
  171.      LEA     DI,DATA_BUF           ;OUTPUT
  172.      PUSH     CS               ;ESTABLISH
  173.      POP     ES               ;  SEGMENT
  174.      REP     STOSW               ;FILE THE BUFFER
  175. RWV_20:
  176.      CALL     READ_PARMS           ;FETCH DRIVE PARMS
  177.      MOV     CUR_HD,0           ;INITIALIZE
  178.      MOV     CUR_SEC,1           ; THE
  179.      MOV     CUR_CYL,0           ;  STARTING FIELDS
  180.      MOV     BAD_SEC,0           ;CLEAR THE BAD TRK COUNT
  181.      MOV     ERR_CNT,0           ;CLEAR THE ERROR COUNT
  182.      MOV     NUM_SEC,1           ;NUMBER OF SECTORS
  183.      CALL     UPD_CYL           ;DISPLAY CYLINDER NUMBER
  184.      CALL     UPD_ERR           ;DISPLAY ERROR COUNT
  185.      WRITE     XS2               ;STATUS
  186.      CLS     LO,4,2,16,78           ;CLEAR THE SCREEN
  187.      CALL     HIDE_CUR           ;HIDE THE CURSOR
  188. ; *********************************************************************
  189. ; *               BEGIN THE TEST                  *
  190. ; *********************************************************************
  191.      CALL     CTLR_DIAG           ;EXECUTE CTLR HDNOSTICS
  192.      JNC     RWV_30            ;SUCESSFULL
  193.      PMSG     32,HI               ;FAILED
  194.      MOV     RW_X,32           ;SET CODE
  195.      CALL     UPD_ERR           ;DISPLAY ERROR COUNT
  196.      CMP     ALL_SW,0FFH           ;RUN ALL TEST??
  197.      JE     RWV_28            ;YES
  198.      JMP     RWV_00            ;TERMINATE FORMAT
  199. RWV_28:
  200.      JMP     EXIT               ;EXIT
  201. RWV_30:
  202.      PUSH     DS               ;ESTABLISG
  203.      POP     ES               ;  SEGMENT
  204.      MOV     AX,MAX_CYL           ;POINT TO
  205.      MOV     CUR_CYL,AX           ;  HD CYLINDER
  206.      LEA     BX,DATA_BUF           ;BUFFER
  207.      PUSH     DS               ;ESTABLISH
  208.      POP     ES               ;  SEGMENT
  209. RWV_40:
  210.      MOV     AH,0BH            ;CHECK FOR
  211.      INT     21H               ;  CONTROL BREAK
  212.      CALL     UPD_CYL           ;DISPLAY CURRENT CYLINDER
  213. RWV_45:
  214.      MOV     HD_CMD,WR_CMD           ;WRITE COMMAND
  215.      MOV     NUM_SEC,1           ;NUMBER OF SECTORS
  216.      CALL     EXEC_CMD           ;WRITE THE SECTOR
  217.      JNC     RWV_50            ;SUCESSFULL
  218.      CMP     AL,0FFH           ;CTLR BROKE??
  219.      JE     RWV_79            ;YES
  220.      CALL     UPD_ERR           ;DISPLAY ERROR COUNT
  221.      CALL     NEXT_SEC           ;TRY ALL SECTORS ON